package com.gungnir.trial;

import com.gungnir.trial.entity.kedu.*;
import com.tyrfing.exceptions.TyrfingServiceException;
import com.tyrfing.model.Pagination;

import java.util.List;

/**
 * @author bingo
 * @date 2024-05-23
 * @title
 */
public interface KeduService {
    /**
     * @api {post} /kedu_service/page_kedu_course 获取课程列表(日课表)
     * @apiName pageKeduCourse
     * @apiGroup keduService
     * @apiDescription 无
     * @apiParam {Integer} pageSize 每页数量
     * @apiParam {Integer} pageNum 当前页
     * @apiParam {Long} beginTime
     * @apiParam {Long} endTime 结束时间
     * @apiParam {String} clroCode 教室编码
     * @apiParam {String} userCode
     * @apiParam {String} teclCode 教学班编号
     * @apiParam {String} tenantCode
     * @apiParamExample {json} Request
     * {
     *   "pageSize": -50012467,
     *   "pageNum": -886147791,
     *   "beginTime": -1138005523,
     *   "endTime": 473380584,
     *   "clroCode": "9bfe0dde",
     *   "userCode": "67e76674",
     *   "teclCode": "15105b7e",
     *   "tenantCode": "2032b032"
     * }
     * @apiSuccess {Pagination} data
     * @apiSuccess {long} data.total 总数
     * @apiSuccess {int} data.pageSize 每页数量
     * @apiSuccess {int} data.pageNum 当前页
     * @apiSuccess {List} data.data
     * @apiSuccess {String} data.data.acteName 未知名称
     * @apiSuccess {Integer} data.data.acyeBeginYear 未知开始年份
     * @apiSuccess {Integer} data.data.acyeEndYear 未知结束年份
     * @apiSuccess {String} data.data.clroCode 教室编码
     * @apiSuccess {Integer} data.data.clroId 教室Id
     * @apiSuccess {String} data.data.clroName 教室名称
     * @apiSuccess {Long} data.data.courBeginTime 课程开始时间
     * @apiSuccess {Long} data.data.courEndTime 课程结束时间
     * @apiSuccess {Integer} data.data.letiNumber 课程节次
     * @apiSuccess {Integer} data.data.liveEnable 默认直播状态:1,启用;0,禁用
     * @apiSuccess {List} data.data.orgaNames 组织名称
     * @apiSuccess {String} data.data.subjCode 科目编号
     * @apiSuccess {String} data.data.subjName 科目名称
     * @apiSuccess {List} data.data.teacCodes 老师编号
     * @apiSuccess {List} data.data.teacNames 老师名称
     * @apiSuccess {String} data.data.teclCode 教学班编号
     * @apiSuccess {String} data.data.teclName 教学班名称
     * @apiSuccess {Integer} data.data.vodEnable 默认点播状态:1,启用;0,禁用
     * @apiSuccess {Integer} data.data.vodStatus 课程结束后点播文件剪辑状态：1-生成中 2-已完成 3-无录像 4-生成失败
     * @apiSuccess {List} data.header 数据表头
     * @apiSuccessExample {json} Response
     * {
     *   "code": 200,
     *   "msg": "success",
     *   "data": {
     *     "total": 1497379636,
     *     "pageSize": 171951520,
     *     "pageNum": 466084070,
     *     "data": [
     *       {
     *         "acteName": "80845997",
     *         "acyeBeginYear": -20216265,
     *         "acyeEndYear": 1227941612,
     *         "clroCode": "4d181174",
     *         "clroId": -623922966,
     *         "clroName": "8109628e",
     *         "courBeginTime": 1349119364,
     *         "courEndTime": 1700807456,
     *         "letiNumber": 675101429,
     *         "liveEnable": -1607133487,
     *         "orgaNames": [
     *           "a5d67ab1"
     *         ],
     *         "subjCode": "f85167e1",
     *         "subjName": "370c451b",
     *         "teacCodes": [
     *           "3b939ba3"
     *         ],
     *         "teacNames": [
     *           "206d3e0f"
     *         ],
     *         "teclCode": "596b6a62",
     *         "teclName": "69a78af2",
     *         "vodEnable": -1913578088,
     *         "vodStatus": -502020988
     *       }
     *     ],
     *     "header": [
     *       "9e8f3124"
     *     ]
     *   }
     * }
     */
    Pagination<KeduCourseVO> pageKeduCourse(Integer pageSize, Integer pageNum, Long beginTime, Long endTime, String clroCode, String userCode, String teclCode, String tenantCode) throws Exception;

    /**
     * @api {post} /kedu_service/find_kedu_live_url 查询直播地址
     * @apiName findKeduLiveUrl
     * @apiGroup keduService
     * @apiDescription 无
     * @apiParam {String} clroCode 教室编码
     * @apiParam {String} playType
     * @apiParam {List} deviViewNum
     * @apiParam {String} tenantCode
     * @apiParamExample {json} Request
     * {
     *   "clroCode": "80647522",
     *   "playType": "61da7ab0",
     *   "deviViewNum": [
     *     171271052
     *   ],
     *   "tenantCode": "cc7452d4"
     * }
     * @apiSuccess {KeduLiveUrlVO} data
     * @apiSuccess {String} data.clroCode 教室编号
     * @apiSuccess {String} data.courId 课程id
     * @apiSuccess {List} data.deviceViewList 教室绑定的设备视角
     * @apiSuccess {Integer} data.deviceViewList.deviViewNum 视角编号：1: '教师1',2: '教师2',3: '学生1',4: '学生2',5: 'PPT',6: '电子白板',7: '合成通道'
     * @apiSuccess {Integer} data.deviceViewList.deviceStatus 设备状态
     * @apiSuccess {String} data.deviceViewList.playUrl 主流通道直播播放url
     * @apiSuccess {String} data.deviceViewList.gbId 主流通道设备视角国标ID
     * @apiSuccess {String} data.deviceViewList.secondPlayUrl 辅流通道直播播放url
     * @apiSuccess {String} data.deviceViewList.secondGbId 辅流通道设备视角国标ID
     * @apiSuccess {Integer} data.liveEnable 默认直播状态:1,启用;0,禁用
     * @apiSuccessExample {json} Response
     * {
     *   "code": 200,
     *   "msg": "success",
     *   "data": {
     *     "clroCode": "3f1f43e1",
     *     "courId": "51aa743a",
     *     "deviceViewList": [
     *       {
     *         "deviViewNum": 99772529,
     *         "deviceStatus": 731505705,
     *         "playUrl": "4e9ba402",
     *         "gbId": "c1f9130d",
     *         "secondPlayUrl": "9b253784",
     *         "secondGbId": "09e07816"
     *       }
     *     ],
     *     "liveEnable": -300819634
     *   }
     * }
     */
    KeduLiveUrlVO findKeduLiveUrl(String clroCode, String playType, List<Integer> deviViewNum, String tenantCode) throws TyrfingServiceException;

    /**
     * @api {post} /kedu_service/find_kedu_video_url 查询点播地址-教室
     * @apiName findKeduVideoUrl
     * @apiGroup keduService
     * @apiDescription 无
     * @apiParam {String} clroCode 教室编号
     * @apiParam {Long} startTime 开始时间
     * @apiParam {Long} endTime 结束时间
     * @apiParam {String} tenantCode
     * @apiParamExample {json} Request
     * {
     *   "clroCode": "85e71aa2",
     *   "startTime": 634610678,
     *   "endTime": -1142114976,
     *   "tenantCode": "dfa83042"
     * }
     * @apiSuccess {KeduVideoUrlVO} data
     * @apiSuccess {String} data.clroCode 教室编号
     * @apiSuccess {List} data.courseVideoUrlList 课程集合
     * @apiSuccess {Long} data.courseVideoUrlList.courBeginTime 课程开始时间
     * @apiSuccess {Long} data.courseVideoUrlList.courEndTime 课程结束时间
     * @apiSuccess {Integer} data.courseVideoUrlList.courId 课程Id
     * @apiSuccess {List} data.courseVideoUrlList.deviceViewList 教室绑定的设备视角
     * @apiSuccess {Integer} data.courseVideoUrlList.deviceViewList.deviViewNum 视角编号：1: '教师1',2: '教师2',3: '学生1',4: '学生2',5: 'PPT',6: '电子白板',7: '合成通道'
     * @apiSuccess {Integer} data.courseVideoUrlList.deviceViewList.deviceStatus 设备状态
     * @apiSuccess {String} data.courseVideoUrlList.deviceViewList.playUrl 主流通道直播播放url
     * @apiSuccess {String} data.courseVideoUrlList.deviceViewList.gbId 主流通道设备视角国标ID
     * @apiSuccess {String} data.courseVideoUrlList.deviceViewList.secondPlayUrl 辅流通道直播播放url
     * @apiSuccess {String} data.courseVideoUrlList.deviceViewList.secondGbId 辅流通道设备视角国标ID
     * @apiSuccess {String} data.courseVideoUrlList.subjCode 课程编码
     * @apiSuccess {String} data.courseVideoUrlList.subjName 课程名称
     * @apiSuccess {List} data.courseVideoUrlList.teacCodes 老师编号
     * @apiSuccess {List} data.courseVideoUrlList.teacNames 老师名称
     * @apiSuccessExample {json} Response
     * {
     *   "code": 200,
     *   "msg": "success",
     *   "data": {
     *     "clroCode": "34a7086c",
     *     "courseVideoUrlList": [
     *       {
     *         "courBeginTime": 763046085,
     *         "courEndTime": 1126317571,
     *         "courId": 990994580,
     *         "deviceViewList": [
     *           {
     *             "deviViewNum": -1071985314,
     *             "deviceStatus": 653778921,
     *             "playUrl": "a40f8110",
     *             "gbId": "a82c6b8b",
     *             "secondPlayUrl": "6aa68448",
     *             "secondGbId": "fe5bae04"
     *           }
     *         ],
     *         "subjCode": "b422d14d",
     *         "subjName": "6e7333ba",
     *         "teacCodes": [
     *           "0212437b"
     *         ],
     *         "teacNames": [
     *           "9a95e345"
     *         ]
     *       }
     *     ]
     *   }
     * }
     */
    KeduVideoUrlVO findKeduVideoUrl(String clroCode, Long startTime, Long endTime, String tenantCode) throws TyrfingServiceException;

    ClassroomVO findKeduDeviceViewInfo(String clroCode, Long startTime, Long endTime, String tenantCode) throws TyrfingServiceException;

    /**
     * @api {post} /kedu_service/list_kedu_video_url_with_ext_info 查询点播地址-教师
     * @apiName listKeduVideoUrlWithExtInfo
     * @apiGroup keduService
     * @apiDescription 无
     * @apiParam {String} teacCode
     * @apiParam {Long} startTime 开始时间
     * @apiParam {Long} endTime 结束时间
     * @apiParam {String} tenantCode
     * @apiParamExample {json} Request
     * {
     *   "teacCode": "83b7b16f",
     *   "startTime": 1222443803,
     *   "endTime": -1029693860,
     *   "tenantCode": "b90cc33d"
     * }
     * @apiSuccess {List} data
     * @apiSuccess {String} data.clroCode 教室编号
     * @apiSuccess {List} data.courseVideoUrlWithExtInfoList 课程集合
     * @apiSuccess {Long} data.courseVideoUrlWithExtInfoList.courBeginTime 课程开始时间
     * @apiSuccess {Long} data.courseVideoUrlWithExtInfoList.courEndTime 课程结束时间
     * @apiSuccess {Integer} data.courseVideoUrlWithExtInfoList.courId 课程Id
     * @apiSuccess {List} data.courseVideoUrlWithExtInfoList.deviceViewList 教室绑定的设备视角
     * @apiSuccess {Integer} data.courseVideoUrlWithExtInfoList.deviceViewList.deviViewNum 视角编号：1: '教师1',2: '教师2',3: '学生1',4: '学生2',5: 'PPT',6: '电子白板',7: '合成通道'
     * @apiSuccess {Integer} data.courseVideoUrlWithExtInfoList.deviceViewList.deviceStatus 设备状态
     * @apiSuccess {String} data.courseVideoUrlWithExtInfoList.deviceViewList.playUrl 主流通道直播播放url
     * @apiSuccess {String} data.courseVideoUrlWithExtInfoList.deviceViewList.gbId 主流通道设备视角国标ID
     * @apiSuccess {String} data.courseVideoUrlWithExtInfoList.deviceViewList.secondPlayUrl 辅流通道直播播放url
     * @apiSuccess {String} data.courseVideoUrlWithExtInfoList.deviceViewList.secondGbId 辅流通道设备视角国标ID
     * @apiSuccess {String} data.courseVideoUrlWithExtInfoList.subjCode 课程编码
     * @apiSuccess {String} data.courseVideoUrlWithExtInfoList.subjName 课程名称
     * @apiSuccess {List} data.courseVideoUrlWithExtInfoList.teacCodes 老师编号
     * @apiSuccess {List} data.courseVideoUrlWithExtInfoList.teacNames 老师名称
     * @apiSuccess {String} data.courseVideoUrlWithExtInfoList.yearTerm 学年学期
     * @apiSuccess {Integer} data.courseVideoUrlWithExtInfoList.needAttNum 应到学生数
     * @apiSuccess {Integer} data.courseVideoUrlWithExtInfoList.actualAttNum 实到学生数
     * @apiSuccess {Integer} data.courseVideoUrlWithExtInfoList.lateNum 迟到学生数
     * @apiSuccess {Double} data.courseVideoUrlWithExtInfoList.attPercent 到勤率
     * @apiSuccess {Double} data.courseVideoUrlWithExtInfoList.frontRowPercent 前排就座率
     * @apiSuccess {Double} data.courseVideoUrlWithExtInfoList.risePercent 抬头率
     * @apiSuccess {Double} data.courseVideoUrlWithExtInfoList.frontFullPercent 前排满座率
     * @apiSuccessExample {json} Response
     * {
     *   "code": 200,
     *   "msg": "success",
     *   "data": [
     *     {
     *       "clroCode": "37e280c2",
     *       "courseVideoUrlWithExtInfoList": [
     *         {
     *           "courBeginTime": 1964320315,
     *           "courEndTime": -920227754,
     *           "courId": -1258276451,
     *           "deviceViewList": [
     *             {
     *               "deviViewNum": -902043717,
     *               "deviceStatus": 1814698452,
     *               "playUrl": "8556dfce",
     *               "gbId": "9c56de9c",
     *               "secondPlayUrl": "97eb8e33",
     *               "secondGbId": "96f2e026"
     *             }
     *           ],
     *           "subjCode": "dfc4f9fc",
     *           "subjName": "896e9857",
     *           "teacCodes": [
     *             "fa4851ab"
     *           ],
     *           "teacNames": [
     *             "db4fc046"
     *           ],
     *           "yearTerm": "890f9e30",
     *           "needAttNum": -1756892267,
     *           "actualAttNum": 870736925,
     *           "lateNum": 800312608,
     *           "attPercent": -1835640802,
     *           "frontRowPercent": 652084907,
     *           "risePercent": -1302928604,
     *           "frontFullPercent": 1572360622
     *         }
     *       ]
     *     }
     *   ]
     * }
     */
    List<KeduVideoUrlWithExtInfoVO> listKeduVideoUrlWithExtInfo(String teacCode, Long startTime, Long endTime, String tenantCode) throws Exception;


    /**
     * @api {post} /kedu_service/page_kedu_room_detail 查询教室学情数据
     * @apiName pageKeduRoomDetail
     * @apiGroup keduService
     * @apiDescription 无
     * @apiParam {Integer} pageSize 每页数量
     * @apiParam {Integer} pageNum 当前页
     * @apiParam {String} classroomCode
     * @apiParam {Long} startDateTime
     * @apiParam {Long} endDateTime
     * @apiParamExample {json} Request
     * {
     *   "pageSize": 577340323,
     *   "pageNum": 420588646,
     *   "classroomCode": "9814d2bb",
     *   "startDateTime": 1969270648,
     *   "endDateTime": 1332541714
     * }
     * @apiSuccess {Pagination} data
     * @apiSuccess {long} data.total 总数
     * @apiSuccess {int} data.pageSize 每页数量
     * @apiSuccess {int} data.pageNum 当前页
     * @apiSuccess {List} data.data
     * @apiSuccess {Integer} data.data.clroSeatCount 教室座位数
     * @apiSuccess {Integer} data.data.clroFrontSeatCount 教室前排座位数
     * @apiSuccess {Integer} data.data.attendanceCount 教室人数
     * @apiSuccess {Integer} data.data.attendanceFaceCount 教室抬头人数
     * @apiSuccess {Integer} data.data.frontAttendancetCount 前排就坐人数
     * @apiSuccess {String} data.data.imagShotTime 考勤分析时间
     * @apiSuccess {String} data.data.clroCode 教室编码
     * @apiSuccess {List} data.header 数据表头
     * @apiSuccessExample {json} Response
     * {
     *   "code": 200,
     *   "msg": "success",
     *   "data": {
     *     "total": -1173182778,
     *     "pageSize": -1687534691,
     *     "pageNum": 1256637275,
     *     "data": [
     *       {
     *         "clroSeatCount": 817924332,
     *         "clroFrontSeatCount": -427285203,
     *         "attendanceCount": -2066050619,
     *         "attendanceFaceCount": 154412345,
     *         "frontAttendancetCount": 276063884,
     *         "imagShotTime": "2779bde2",
     *         "clroCode": "9237dadc"
     *       }
     *     ],
     *     "header": [
     *       "6e8ad4ce"
     *     ]
     *   }
     * }
     */
    Pagination<KeduRoomDetailVO> pageKeduRoomDetail(Integer pageSize, Integer pageNum, String classroomCode, Long startDateTime, Long endDateTime) throws Exception;
}
